"""评分系统配置模块.

本模块定义评分系统的核心配置:

1. 评分权重配置
   - 商家评分权重
   - 用户评分权重

2. 分数区间配置
   - S+ (钻石级): 900-1000分
   - S  (金牌级): 800-899分
   - A+ (银牌级): 700-799分
   - A  (铜牌级): 600-699分
   - B+ (信用级): 500-599分
   - B  (观察级): 400-499分
   - C+ (受限级): 300-399分
   - C  (高危级): 200-299分
   - D  (禁止级): 0-199分

3. 商家权益配置
   - 搜索展示优先级
   - 平台服务费率
   - 商家标识
   - 活动参与权限

4. 用户权益配置
   - 免押金额度
   - 延迟付款期限
   - 优惠券权益
   - 专属客服
"""

from typing import Dict, List, Tuple

# 商家评分权重配置
MERCHANT_WEIGHTS: Dict[str, float] = {
    "transaction_score": 0.25,  # 交易维度: 交易额、频率、稳定性
    "service_score": 0.20,      # 服务维度: 响应速度、退款处理、争议解决
    "product_score": 0.20,      # 商品维度: 商品质量、描述准确性、库存管理
    "activity_score": 0.15,     # 活跃维度: 店铺年龄、登录频率、活动参与
    "compliance_score": 0.20    # 合规维度: 资质完备性、违规记录、投诉率
}

# 用户评分权重配置
USER_WEIGHTS: Dict[str, float] = {
    "consumption_score": 0.25,  # 消费维度: 消费额、频率、多样性
    "payment_score": 0.25,      # 支付维度: 及时性、完成率
    "return_score": 0.20,       # 退货维度: 退货率、原因
    "complaint_score": 0.15,    # 投诉维度: 投诉率、处理结果
    "social_score": 0.15        # 社交维度: 评价、互动、贡献
}

# 信用分数区间和等级配置
SCORE_RANGES: List[Tuple[int, int, str]] = [
    (900, 1000, "S+"),  # 钻石级: 最高信用等级
    (800, 899, "S"),    # 金牌级: 优质商家/用户
    (700, 799, "A+"),   # 银牌级: 良好信用
    (600, 699, "A"),    # 铜牌级: 正常信用
    (500, 599, "B+"),   # 信用级: 基础信用
    (400, 499, "B"),    # 观察级: 需要观察
    (300, 399, "C+"),   # 受限级: 部分限制
    (200, 299, "C"),    # 高危级: 严格限制
    (0, 199, "D")       # 禁止级: 暂停资格
]

# 商家权益配置
MERCHANT_PRIVILEGES: Dict[str, List[str]] = {
    "S+": [  # 钻石级权益
        "搜索结果最优先展示",
        "最低平台服务费率(3折起)",
        "专属钻石商家标识",
        "平台活动优先报名权",
        "新品优先上架通道",
        "专属客户经理服务"
    ],
    "S": [   # 金牌级权益
        "搜索结果优先展示",
        "优惠平台服务费率(5折起)",
        "专属金牌商家标识",
        "重点活动优先参与权"
    ],
    "A+": [  # 银牌级权益
        "搜索结果靠前展示",
        "平台服务费率7折起",
        "银牌商家标识"
    ],
    "A": [   # 铜牌级权益
        "标准搜索排序",
        "平台服务费率8折起",
        "铜牌商家标识"
    ],
    "B+": [  # 信用级权益
        "基础展示权限",
        "标准平台服务费率",
        "信用商家标识"
    ],
    "B": [   # 观察级权益
        "基础展示权限",
        "标准平台服务费率"
    ],
    "C+": [  # 受限级权益
        "限制部分类目展示",
        "上调平台服务费率"
    ],
    "C": [   # 高危级权益
        "严格限制展示",
        "显著提高服务费率"
    ],
    "D": [   # 禁止级权益
        "禁止展示商品",
        "暂停店铺运营"
    ]
}

# 用户权益配置
USER_PRIVILEGES: Dict[str, List[str]] = {
    "S+": [  # 钻石级权益
        "全平台商品免押金试用",
        "最长45天延迟付款期限",
        "专属优惠券包(月享)",
        "24小时专属客服"
    ],
    "S": [   # 金牌级权益
        "大部分商品免押金试用",
        "30天延迟付款期限",
        "专属优惠券包(月享)"
    ],
    "A+": [  # 银牌级权益
        "部分商品免押金试用",
        "15天延迟付款期限",
        "定期优惠券包"
    ],
    "A": [   # 铜牌级权益
        "低押金试用",
        "7天延迟付款期限",
        "常规优惠券"
    ],
    "B+": [  # 信用级权益
        "标准押金试用",
        "3天延迟付款期限"
    ],
    "B": [   # 观察级权益
        "标准押金试用",
        "仅支持预付款"
    ],
    "C+": [  # 受限级权益
        "提高押金要求",
        "仅支持预付款"
    ],
    "C": [   # 高危级权益
        "仅支持全额预付",
        "限制购买类目"
    ],
    "D": [   # 禁止级权益
        "禁止交易",
        "账户冻结"
    ]
}

# 评分计算参数配置
SCORE_PARAMS = {
    "min_score": 0,            # 最低分数
    "max_score": 1000,         # 最高分数
    "base_score": 500,         # 基础分数
    "update_interval": 3600,   # 更新间隔(秒)
    "decay_factor": 0.95,      # 分数衰减因子
    "boost_factor": 1.05       # 分数提升因子
}

# 风险阈值配置
RISK_THRESHOLDS = {
    "transaction_amount": 10000,    # 单笔交易金额阈值
    "hourly_frequency": 10,         # 每小时最大交易次数
    "daily_frequency": 50,          # 每日最大交易次数
    "minimum_score": 200,           # 最低准入分数
    "high_risk_score": 300,         # 高风险分数线
    "critical_risk_score": 200      # 严重风险分数线
}